
// 核心入口
// 需要导出一个继承子Yeoman Generator的类型
// Yeoman Generator在工作中会自动调用我们在此类型中定义的一些生命周期方法
// 在这些方法中可以通过调用父类提供的方法实现一些功能

const Generator = require('yeoman-generator')

module.exports = class extends Generator {
    prompting () {
        // 调用父类prompt()发出对用户命令行询问
        return this.prompt([
            {
                type:'input',
                name: 'name',
                message: 'your project name',
                default: this.appname // 当前目录文件夹名字
            }
        ]).then(answers =>{
            // answers => {name:'input value',name:}
            this.answers = answers
        })
    }
    writing () {
        // yeoman自动在生成文件阶段调用此方法
        // 尝试在项目中写入文件
        // this.fs.write(
        //     this.destinationPath('temp.txt'),
        //     Math.random().toString()
        // )

        // 模板文件方式
        // 模板文件位置
        // const tmpl = this.templatePath('bar.html')
        // // 输出文件位置
        // const output = this.destinationPath('bar.html')
        // // 模板数据上下文
        // const context = this.answers
        // this.fs.copyTpl(tmpl, output, context)
    
        // 批量模板导入
        const templates = [
            'webpack.prod.js',
            'webpack.dev.js',
            'webpack.common.js',
            'README.md',
            'postcss.config.js',
            'package.json',
            '.gitignore',
            '.babelrc',
            'src/index.js',
            'src/index.css',
            'src/app.js',
            'src/product/index.js',
            'src/about/index.js',
            'public/index.html',
            'public/assets/react.png',
        ]

        templates.forEach(item =>{
            this.fs.copyTpl(
                this.templatePath(item),
                this.destinationPath(item),
                this.answers
            )
        })
    }
}